package br.com.cast.syscast.pais.paginas;

import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.validation.validator.StringValidator;

import br.com.cast.syscast.HomePage;
import br.com.cast.syscast.excecoes.PaisJaCadastrado;
import br.com.cast.syscast.models.Pais;
import br.com.cast.syscast.services.IPaisService;
import br.com.cast.syscast.util.ComponentUtil;

public class FormPais extends Form<Pais> {
	
	private static final long serialVersionUID = 1L;
	
	@SpringBean
	private IPaisService paisService;


	public FormPais(String id) {
		super(id, new CompoundPropertyModel<Pais>(
				new Pais()));
		
		criaCampoNome();
		
		criaCampoArea();
		
		criaCampoContinente();
		
		criaLinkCancelar();
	}

	private void criaLinkCancelar() {
		add(new Link("cancelar") {
			@Override
			public void onClick() {
				redirecionaListar();
			}
		});
	}

	private void criaCampoContinente() {
		add(new RequiredTextField<>("continente")
				.add(new StringValidator(0, 50)));
	}

	private void criaCampoArea() {
		add(new RequiredTextField<>("area"));
	}

	private void criaCampoNome() {
		add(new RequiredTextField<>("nome")
				.add(new StringValidator(0, 50)));
	}
	
	@Override
	protected void onSubmit() {
		Pais pais = (Pais) getDefaultModelObject();
		
		try {
			paisService.salvar(pais);
			HomePage template = redirecionaListar();
			template.success("Registro inserido com sucesso!");
		} catch (PaisJaCadastrado e) {
			error(e.getMessage());
		}
	}
	
	private HomePage redirecionaListar() {
		HomePage template = ComponentUtil.getTemplate(this);
		template.replace(new ListarPais(HomePage.ID_CONTEUDO));
		return template;
	}

}
